#ifndef CREATURE
#define CREATURE

#include "base_object.h"
#include "stats.h"
#include "event.h"
#include "game_define.h"
#include <queue>

class Creature : public BaseObject
{
private:
	Position 	m_Position;

	BaseStats 	m_BaseStats;
	
	FinalStats 	m_FinalStats;
	
	EffectType	m_BeingEffect;
	
	queue<Event*> m_EventQueue;
	
protected:
	//Excute functions for each event type
	//-TO-DO-

	
	//Event handle is called first in update cycle
	//excute all event untill it is empty
	virtual void EventHandle();
public:	
	virtual Creature();
	
	virtual void 	Update(double time_elapsed);
	
	virtual void 	GetPositin(Position &pos);
	
	virtual void 	SetPosition(Position pos);
	
	virtual float 	GetStat(Atribute stat_name);
	
	virtual bool	IsEffect(EffectType effect) { return effect == (effect & m_BeingEffect);}
	
	~Creature();
};

#endif

